/** <!--------------------------------------------------------------------------------------------->
 * @file RevModelItem.h
 *
 * GSvn - A Graphical Client for SVN
 * Copyright (C) 2012  Karl Krach, gsvn@bluespirit.la
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 <!---------------------------------------------------------------------------------------------> */

#ifndef REVMODELITEM_H
#define REVMODELITEM_H

// -- includes --
#include "SvnHistoryListener.h"
#include <QMetaType>
#include <QVariant>

// -- defines --
typedef int BranchIndex;
#ifndef QSP
#define QSP QSharedPointer
#endif

/** <!--------------------------------------------------------------------------------------------->
 * Model item to store the data
 *
 * @author	Karl Krach, <gsvn@bluespirit.la>
 * @since	2012-01-21
 <!---------------------------------------------------------------------------------------------> */
class RevModelItem
{

	/* Con-/Destructors */
public:

	/** <!----------------------------------------------------------------------------------------->
	 * Creates the RevModelItem object
	 <!-----------------------------------------------------------------------------------------> */
	RevModelItem();

	/** <!----------------------------------------------------------------------------------------->
	 * Creates the RevModelItem object from the given QVariant object
	 <!-----------------------------------------------------------------------------------------> */
	RevModelItem( const QVariant& rOther );

	/** <!----------------------------------------------------------------------------------------->
	 * Deletes the RevModelItem object
	 <!-----------------------------------------------------------------------------------------> */
	virtual ~RevModelItem();


	/* Members */
public:

	/** <!----------------------------------------------------------------------------------------->
	 * Revision ID
	 <!-----------------------------------------------------------------------------------------> */
	int m_iRevision;

	/** <!----------------------------------------------------------------------------------------->
	 * Commit time
	 <!-----------------------------------------------------------------------------------------> */
	QDateTime m_oDateTime;

	/** <!----------------------------------------------------------------------------------------->
	 * Log message
	 <!-----------------------------------------------------------------------------------------> */
	QString m_strMessage;

	/** <!----------------------------------------------------------------------------------------->
	 * Revision author
	 <!-----------------------------------------------------------------------------------------> */
	QString m_strAuthor;

	/** <!----------------------------------------------------------------------------------------->
	 * Copy information
	 <!-----------------------------------------------------------------------------------------> */
	QList<SvnHistoryListener::SvnCopyInfo> m_aCopyInfo;

	/** <!----------------------------------------------------------------------------------------->
	 * Branch index
	 <!-----------------------------------------------------------------------------------------> */
	BranchIndex m_iBranchIndex;

};	// END class RevModelItem

// -- declare metatype --
Q_DECLARE_METATYPE( RevModelItem )
Q_DECLARE_METATYPE( QSP<RevModelItem> )
Q_DECLARE_METATYPE( BranchIndex )

#endif // REVMODELITEM_H
